﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using VietKinsNutrition.Bussiness;
using VietKinsNutrition.Data;
using VietKinsNutrition.Common;

namespace VietKinsNutrition.BaoCao
{
    public partial class FrmThongkebaocaodinhduongcho1tre : DevExpress.XtraEditors.XtraForm
    {
        DateTime dNgaydiemdanh;
        ClsEventsInControlBLL ClsEventsInControlbll = new ClsEventsInControlBLL();
        ClsTblDm_KhoilopBLL ClsTblDm_Khoilopbll = new ClsTblDm_KhoilopBLL();
        ClsTblDiemdanhtreanBLL ClsTblDiemdanhtreanbll = new ClsTblDiemdanhtreanBLL();
        DataRow dr;
        ClsTblDmTruonghocDAL ClsTblDmTruonghocdal = new ClsTblDmTruonghocDAL();
        ClsExport2ExcelBLL ClsExport2Excelbll = new ClsExport2ExcelBLL();
        string sTieude, sTenso, sTentruong, sTenphong;
        ClsTblDm_SosanhnangluonBLL ClsTblDm_Sosanhnangluon_bll = new ClsTblDm_SosanhnangluonBLL();
        DataTable TblXuatoantruong = new DataTable();
        ClsTblThamsodauvaoBLL ClsTblThamsodauvaobll = new ClsTblThamsodauvaoBLL();
        ClsTblDm_XuatkhoBLL ClsTblDm_Xuatkho_bll = new ClsTblDm_XuatkhoBLL();
        public FrmThongkebaocaodinhduongcho1tre()
        {
            InitializeComponent();
        }

        private void FrmThongkebaocaodinhduongcho1tre_Load(object sender, EventArgs e)
        {
            ClsTblDm_Khoilopbll.Bind_Cbo(this.cbokhoi);
            datNgay.EditValue = DateTime.Now;
            UserComboBoxItem.SelectItem(cbokhoi, "1");
        }

        int[] iArrTongsotre;
        int iTongNhatre = 0;
        int iTongMaugiao = 0;
        private int TongtreTTruong()
        {
            iTongNhatre = 0;
            iTongMaugiao = 0;
            //ComboBox CboTG = new ComboBox();

            DataTable Tbl = (DataTable)ClsTblDm_Khoilopbll.GetTable();
            int Tongtre = 0;
            iArrTongsotre = new int[Tbl.Rows.Count];
            int a = -1;
            foreach (DataRow Rw in Tbl.Rows)
            {
                a = a + 1;
                try
                {
                    if (Rw["Tenkhoilop"].ToString().Trim().ToUpper() == "NHÓM BỘT")
                    {
                        iArrTongsotre[a] = int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(Rw["Id"].ToString()), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                        Tongtre = Tongtre + int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(Rw["Id"].ToString()), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                    }
                    if (Rw["Tenkhoilop"].ToString().Trim().ToUpper() == "NHÓM CHÁO")
                    {
                        iArrTongsotre[a] = int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(Rw["Id"].ToString()), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                        Tongtre = Tongtre + int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(Rw["Id"].ToString()), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                    }
                    if (Rw["Tenkhoilop"].ToString().Trim().ToUpper() == "NHÀ TRẺ")
                    {
                        iTongNhatre = int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(Rw["Id"].ToString()), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                        iArrTongsotre[a] = iTongNhatre;
                        Tongtre = Tongtre + iTongNhatre;
                    }
                    if (Rw["Tenkhoilop"].ToString().Trim().ToUpper() == "MẪU GIÁO")
                    {
                        iTongMaugiao = int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(Rw["Id"].ToString()), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                        iArrTongsotre[a] = iTongMaugiao;
                        Tongtre = Tongtre + iTongMaugiao;
                    }

                }
                catch { }
            }
            return Tongtre;

        }

        int iTongsotre = 0;
        static int iValeTongsotre;
        private void Tongsotrebaoan()
        {

            DataTable TongsotreTbl = new DataTable();
            // trả về tổng sô trẻ.
            try
            {
                TongsotreTbl = ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(UserComboBoxItem.GetItemValue(cbokhoi)), ParamCls.NamhocId, dNgaydiemdanh);
            }
            catch { return; }
            if (TongsotreTbl.Rows.Count > 0)
            {
                iTongsotre = int.Parse(TongsotreTbl.Rows[0]["Tongsosuat"].ToString());
            }
            iValeTongsotre = iTongsotre;
        }

        private void btnThongke_Click(object sender, EventArgs e)
        {
            try
            {
                if (ClsTblThamsodauvaobll.SelectAll().Rows.Count > 0 && ClsTblThamsodauvaobll.SelectAll().Rows[0]["Baoanchitiet"].ToString() != "True")
                {
                    #region kodukien
                    if (cbokhoi.EditValue != null)
                    {
                        dNgaydiemdanh = datNgay.DateTime;
                        TongtreTTruong();
                        TblXuatoantruong = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuatReturnDSxuatthucpham_PLG_ByNgay(dNgaydiemdanh);
                        this.grdCtrlDukien.DataSource = TblXuatoantruong;

                        DataTable TblKhoilop = ClsTblDm_Khoilopbll.GetTable();

                        int[] ArrInt = new int[TblKhoilop.Rows.Count];
                        try
                        {


                            for (int iAr = 0; iAr < TblKhoilop.Rows.Count; iAr++)
                            {
                                try
                                {
                                    ArrInt[iAr] = int.Parse(TblKhoilop.Rows[iAr]["Id"].ToString());
                                }
                                catch { }
                            }
                        }
                        catch { }
                        ClsTblDm_Sosanhnangluon_bll.CalculatorTPDD_AllSchool(ArrInt, cbokhoi.Text, iArrTongsotre, grdDukien, grdTyle, "TẤT CẢ");
                        ClsThucdon_monanBLL ClsThucdon_monanbll = new ClsThucdon_monanBLL();
                        string Dd = datNgay.DateTime.ToString();
                        DataTable Tbl = (DataTable)grdCtrlDukien.DataSource;
                        DataTable ReturnTbl = new DataTable();
                        ReturnTbl.Columns.Add("STT", Tbl.Columns["Tenthucan"].DataType);
                        ReturnTbl.Columns.Add("Tenthucan", Tbl.Columns["Tenthucan"].DataType);

                        ReturnTbl.Columns.Add("Soluong", Tbl.Columns["Soluongxuat"].DataType);
                        ReturnTbl.Columns.Add("Nguondongvat", Tbl.Columns["Tenthucan"].DataType);
                        ReturnTbl.Columns.Add("Calo", Tbl.Columns["kCalo"].DataType);
                        ReturnTbl.Columns.Add("Tphh_Protid", Tbl.Columns["Protid_DV"].DataType);

                        ReturnTbl.Columns.Add("Tphh_Lipid", Tbl.Columns["Lipid_DV"].DataType);
                        ReturnTbl.Columns.Add("Tphh_GlucId", Tbl.Columns["GlucId"].DataType);

                        //them
                        Tbl.Columns.Add("Soluong", Tbl.Columns["Soluongxuat"].DataType);
                        Tbl.Columns.Add("Nguondongvat", Tbl.Columns["Tenthucan"].DataType);
                        Tbl.Columns.Add("Calo", Tbl.Columns["kCalo"].DataType);
                        Tbl.Columns.Add("Tphh_Protid", Tbl.Columns["Protid_DV"].DataType);

                        Tbl.Columns.Add("Tphh_Lipid", Tbl.Columns["Lipid_DV"].DataType);
                        Tbl.Columns.Add("Tphh_GlucId", Tbl.Columns["GlucId"].DataType);
                        int i = 0;
                        int iTongso = iTongMaugiao + iTongNhatre;
                        foreach (DataRow Rw in Tbl.Rows)
                        {
                            i = i + 1;
                            string kt = "";
                            //if (Rw["Lipid_TV"].ToString().Trim() == "0")
                            //{ kt = "Thực vật"; }
                            if (Rw["Lipid_DV"].ToString() != "0")
                            {
                                kt = "Động vật";
                                // CU ITONG - kcalo
                                //itongmaugio = 

                                if (cbokhoi.Text.Trim().ToUpper() == "NHÀ TRẺ")
                                {
                                    if (iTongNhatre == 0)
                                    {
                                        XtraMessageBox.Show("Số lượng trẻ báo ăn bằng 0, hệ thống không in dữ liệu");
                                        return;
                                    }
                                    Rw["Calo"] = (float.Parse(Rw["KCalo"].ToString())) / iTongso;
                                    Rw["Tphh_Protid"] = (float.Parse(Rw["Protid_DV"].ToString())) / iTongso;
                                    Rw["Tphh_Lipid"] = (float.Parse(Rw["Lipid_DV"].ToString())) / iTongso;
                                    Rw["Tphh_GlucId"] = (float.Parse(Rw["GlucId"].ToString())) / iTongso;
                                    Rw["Soluong"] = (float.Parse(Rw["Soluongxuat"].ToString())) / iTongso;
                                }
                                else
                                {
                                    if (iTongMaugiao == 0)
                                    {
                                        XtraMessageBox.Show("Số lượng trẻ báo ăn bằng 0, hệ thống không in dữ liệu");
                                        return;
                                    }
                                    Rw["Calo"] = (float.Parse(Rw["KCalo"].ToString())) / iTongso;
                                    Rw["Tphh_Protid"] = (float.Parse(Rw["Protid_DV"].ToString())) / iTongso;
                                    Rw["Tphh_Lipid"] = (float.Parse(Rw["Lipid_DV"].ToString())) / iTongso;
                                    Rw["Tphh_GlucId"] = (float.Parse(Rw["GlucId"].ToString())) / iTongso;
                                    Rw["Soluong"] = (float.Parse(Rw["Soluongxuat"].ToString())) / iTongso;
                                }

                            }
                            else
                            {
                                kt = "Thực vật";
                                if (cbokhoi.Text.Trim().ToUpper() == "NHÀ TRẺ")
                                {
                                    if (iTongNhatre == 0)
                                    {
                                        XtraMessageBox.Show("Số lượng trẻ báo ăn bằng 0, hệ thống không in dữ liệu");
                                        return;
                                    }
                                    Rw["Calo"] = (float.Parse(Rw["KCalo"].ToString())) / iTongso;
                                    Rw["Tphh_Protid"] = (float.Parse(Rw["Protid_TV"].ToString())) / iTongso;
                                    Rw["Tphh_Lipid"] = (float.Parse(Rw["Lipid_TV"].ToString())) / iTongso;
                                    Rw["Tphh_GlucId"] = (float.Parse(Rw["GlucId"].ToString())) / iTongso;
                                    Rw["Soluong"] = (float.Parse(Rw["Soluongxuat"].ToString())) / iTongso;
                                }
                                else
                                {
                                    if (iTongMaugiao == 0)
                                    {
                                        XtraMessageBox.Show("Số lượng trẻ báo ăn bằng 0, hệ thống không in dữ liệu");
                                        return;
                                    }

                                    Rw["Calo"] = (float.Parse(Rw["KCalo"].ToString())) / iTongso;
                                    Rw["Tphh_Protid"] = (float.Parse(Rw["Protid_TV"].ToString())) / iTongso;
                                    Rw["Tphh_Lipid"] = (float.Parse(Rw["Lipid_TV"].ToString())) / iTongso;
                                    Rw["Tphh_GlucId"] = (float.Parse(Rw["GlucId"].ToString())) / iTongso;
                                    Rw["Soluong"] = (float.Parse(Rw["Soluongxuat"].ToString())) / iTongso;
                                }
                            }

                            try
                            {
                                if (Rw["Soluong"].ToString().Trim() != "")
                                {
                                    Rw["Calo"] = float.Parse(Rw["Soluongxuat"].ToString()) * 10 * float.Parse(Rw["Calo"].ToString());
                                    Rw["Tphh_Protid"] = float.Parse(Rw["Soluongxuat"].ToString()) * 10 * float.Parse(Rw["Tphh_Protid"].ToString());
                                    Rw["Tphh_Lipid"] = float.Parse(Rw["Soluongxuat"].ToString()) * 10 * float.Parse(Rw["Tphh_Lipid"].ToString());
                                    Rw["Tphh_GlucId"] = float.Parse(Rw["Soluongxuat"].ToString()) * 10 * float.Parse(Rw["Tphh_GlucId"].ToString());
                                    Rw["Soluong"] = float.Parse(Rw["Soluong"].ToString());
                                }
                            }
                            catch
                            { }
                            ReturnTbl.Rows.Add(i, Rw["Tenthucan"], Rw["Soluong"], kt, Rw["Calo"], Rw["Tphh_Protid"], Rw["Tphh_Lipid"], Rw["Tphh_GlucId"]);

                        }
                        if (cbokhoi.Text.Trim().ToUpper() == "NHÀ TRẺ")
                        {
                            if (iTongNhatre == 0)
                            {
                                XtraMessageBox.Show("Số lượng trẻ báo ăn bằng 0, hệ thống không in dữ liệu");
                                return;
                            }
                            foreach (DataRow Rw in ((DataTable)grdCtrlTyle.DataSource).Rows)
                            {
                                //iTongMaugiao + iTongNhatre;
                                for (int iCol = 0; iCol < grdTyle.Columns.Count; iCol++)
                                {
                                    try
                                    {
                                        Rw[iCol] = (float.Parse(Rw[iCol].ToString())) / iTongso;
                                    }
                                    catch { }
                                }
                            }
                        }
                        else
                        {
                            if (iTongMaugiao == 0)
                            {
                                MessageBox.Show("Số lượng trẻ báo ăn bằng 0, hệ thống không in dữ liệu");
                                return;
                            }
                            foreach (DataRow Rw in ((DataTable)grdCtrlTyle.DataSource).Rows)
                            {
                                //iTongMaugiao + iTongNhatre;
                                for (int iCol = 1; iCol < grdTyle.Columns.Count; iCol++)
                                {
                                    try
                                    {
                                        Rw[iCol] = (float.Parse(Rw[iCol].ToString())) / iTongso;
                                    }
                                    catch { }
                                }
                            }
                        }
                        ThongkeduongchatbuaandataGridView.DataSource = ReturnTbl;
                        if (ThongkeduongchatbuaandataGridView.RowCount <= 0)
                        {
                            MessageBox.Show("Dữ liệu chưa tồn tại");
                            return;
                        }
                        ClsTblDmTruonghocDAL ClsTblDmTruonghocdal = new ClsTblDmTruonghocDAL();
                        ClsExport2ExcelBLL ClsExport2Excelbll = new ClsExport2ExcelBLL();
                        ClsTblTruonghocBLL ClsTblTruonghocbll = new ClsTblTruonghocBLL();
                        DataTable Tbl1 = ClsTblTruonghocbll.ReturnTblTRuong();
                        if (Tbl1.Rows.Count > 0)
                        {
                            dr = Tbl1.Rows[0];
                            sTenso = dr["TensoGD"].ToString();
                            sTentruong = dr["Tentruong"].ToString();
                            sTenphong = dr["TenphongGD"].ToString();
                            sTieude = "DINH DƯỠNG TRONG THỰC PHẨM CHO 1 TRẺ ";
                            saveFileDialog1.FileName = sTieude;
                        }
                        this.dtg_hienthiplg.DataSource = this.grdCtrlTyle.DataSource;
                        DataTable tblbaocao = ReturnTbl.Copy();
                        System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("VietKinsNutrition.Resources." + "Dinh duong cho 1 tre theo khoi.xls");
                        ClsDanhsachNV.ThongkeDD(stream, "Dinh duong cho 1 tre theo khoi.xls", sTenso, sTenphong, sTentruong, sTieude, Dd, tblbaocao, this.dtg_hienthiplg);
                    }
                    else
                        return;
                    #endregion
                }
                else
                {
                    #region dukien
                    ClsThucdon_monanBLL ClsThucdon_monanbll = new ClsThucdon_monanBLL();
                    int ibaoan = 0;
                    dNgaydiemdanh = datNgay.DateTime;
                    string Dd = datNgay.DateTime.ToString();

                    this.grdCtrlDukien.DataSource = this.ClsTblDm_Xuatkho_bll.TblXuatchokhoilop_ByKhoilop_Ngay(dNgaydiemdanh, int.Parse(UserComboBoxItem.GetItemValue(cbokhoi)));
                    ClsTblDm_Sosanhnangluon_bll.CalculatorTPDD(int.Parse(UserComboBoxItem.GetItemValue(cbokhoi)), cbokhoi.Text, 1, grdDukien, grdTyle, "TẤT CẢ");



                    if (ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(UserComboBoxItem.GetItemValue(cbokhoi)), ParamCls.NamhocId, dNgaydiemdanh).Rows.Count > 0)
                    {
                        ibaoan = int.Parse(ClsTblDm_Sosanhnangluon_bll.GetTongsotre(int.Parse(UserComboBoxItem.GetItemValue(cbokhoi)), ParamCls.NamhocId, dNgaydiemdanh).Rows[0]["Tongsosuat"].ToString());
                    }

                    this.dtg_hienthiplg.DataSource = this.grdCtrlTyle.DataSource;
                    for (int c = 1; c <= 2; c++)
                    {
                        dtg_hienthiplg.Rows[c].Cells["Kcalootruong"].Value = double.Parse(dtg_hienthiplg.Rows[c].Cells["Kcalootruong"].Value.ToString()) / ibaoan;
                        dtg_hienthiplg.Rows[c].Cells["ProteinOtruong"].Value = double.Parse(dtg_hienthiplg.Rows[c].Cells["ProteinOtruong"].Value.ToString()) / ibaoan;
                        dtg_hienthiplg.Rows[c].Cells["Lipidotruong"].Value = double.Parse(dtg_hienthiplg.Rows[c].Cells["Lipidotruong"].Value.ToString()) / ibaoan;
                        dtg_hienthiplg.Rows[c].Cells["GlucidOtruong"].Value = double.Parse(dtg_hienthiplg.Rows[c].Cells["GlucidOtruong"].Value.ToString()) / ibaoan;
                    }

                    DataTable Tbl = ClsThucdon_monanbll.TblBaocaoduongchattrongbuaan(int.Parse(UserComboBoxItem.GetItemValue(cbokhoi)), 0, dNgaydiemdanh);
                    DataTable ReturnTbl = new DataTable();
                    ReturnTbl.Columns.Add("STT", Tbl.Columns["Tenthucan"].DataType);
                    ReturnTbl.Columns.Add("Tenthucan", Tbl.Columns["Tenthucan"].DataType);
                    ReturnTbl.Columns.Add("Soluong", Tbl.Columns["Soluong"].DataType);
                    ReturnTbl.Columns.Add("Nguondongvat", Tbl.Columns["Tenthucan"].DataType);
                    ReturnTbl.Columns.Add("Calo", Tbl.Columns["Calo"].DataType);
                    ReturnTbl.Columns.Add("Tphh_Protid", Tbl.Columns["Tphh_Protid"].DataType);

                    ReturnTbl.Columns.Add("Tphh_Lipid", Tbl.Columns["Tphh_Lipid"].DataType);
                    ReturnTbl.Columns.Add("Tphh_GlucId", Tbl.Columns["Tphh_GlucId"].DataType);

                    int i = 0;
                    foreach (DataRow Rw in Tbl.Rows)
                    {
                        i = i + 1;
                        string kt = "";
                        if (Rw["Nguondongvat"].ToString().Trim() == "")
                        { kt = "Thực vật"; }
                        if (Rw["Nguondongvat"].ToString() == "True")
                        {
                            kt = "Động vật";
                        }
                        else
                            kt = "Thực vật";
                        try
                        {
                            if (Rw["Soluong"].ToString().Trim() != "")
                            {
                                try
                                {
                                    Rw["Calo"] = (float.Parse(Rw["Soluong"].ToString()) * 10 * float.Parse(Rw["Calo"].ToString())) / ibaoan;
                                }
                                catch { }
                                Rw["Tphh_Protid"] = (float.Parse(Rw["Soluong"].ToString()) * 10 * float.Parse(Rw["Tphh_Protid"].ToString())) / ibaoan;
                                Rw["Tphh_Lipid"] = (float.Parse(Rw["Soluong"].ToString()) * 10 * float.Parse(Rw["Tphh_Lipid"].ToString())) / ibaoan;
                                Rw["Tphh_GlucId"] = (float.Parse(Rw["Soluong"].ToString()) * 10 * float.Parse(Rw["Tphh_GlucId"].ToString())) / ibaoan;
                                Rw["Soluong"] = float.Parse(Rw["Soluong"].ToString()) / ibaoan;

                            }
                        }
                        catch
                        { }
                        ReturnTbl.Rows.Add(i, Rw["Tenthucan"], (double)Rw["Soluong"], kt, (double)Rw["Calo"], (double)Rw["Tphh_Protid"], (double)Rw["Tphh_Lipid"], (double)Rw["Tphh_GlucId"]);

                    }
                    ThongkeduongchatbuaandataGridView.DataSource = ReturnTbl;


                    if (ThongkeduongchatbuaandataGridView.RowCount <= 0)
                    {
                        MessageBox.Show("Dữ liệu chưa tồn tại");
                        return;
                    }
                    ClsTblTruonghocBLL ClsTblTruonghocbll = new ClsTblTruonghocBLL();
                    DataTable Tbl2 = ClsTblTruonghocbll.ReturnTblTRuong();
                    ClsExport2ExcelBLL ClsExport2Excelbll = new ClsExport2ExcelBLL();
                    if (Tbl2.Rows.Count > 0)
                    {
                        dr = Tbl2.Rows[0];
                        sTenso = dr["TensoGD"].ToString();
                        sTentruong = dr["Tentruong"].ToString();
                        sTenphong = dr["TenphongGD"].ToString();
                        sTieude = "DINH DƯỠNG TRONG THỰC PHẨM CHO 1 TRẺ KHỐI " + cbokhoi.Text.ToUpper();
                        saveFileDialog1.FileName = sTieude;
                    }
                    this.dtg_hienthiplg.DataSource = this.grdCtrlTyle.DataSource;
                    DataTable tblbaocao = ReturnTbl.Copy();
                    System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("VietKinsNutrition.Resources." + "Dinh duong cho 1 tre theo khoi.xls");
                    ClsDanhsachNV.ThongkeDD(stream, "Dinh duong cho 1 tre theo khoi.xls", sTenso, sTenphong, sTentruong, sTieude, Dd, tblbaocao, dtg_hienthiplg);

                    #endregion
                }

            }
            catch { XtraMessageBox.Show("Xuất dữ liệu gặp lỗi. Có thể chưa có dữ liệu.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
        }
    }
}